package com.cw.service;

import com.cw.common.api.ResultObject;
import com.cw.dto.OneToManyDto;
import com.cw.dto.RoleGetInfoDto;
import com.cw.entity.SysMenu;
import com.cw.entity.SysRoleMenu;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 用户角色菜单 服务类
 * </p>
 *
 * @author smq
 * @since 2021-04-28
 */
public interface ISysRoleMenuService extends IService<SysRoleMenu> {
    int USER_FLAG = 0;
    int MENU_FLAG = 1;

    List<SysRoleMenu> getSysRoleMenu(String roleId);

    int insertSysRoleMenu(List<SysRoleMenu> list);

    int updateSysRoleMenu(SysRoleMenu sysRoleMenu);

    int deleteSysRoleMenu(String roleId);

    /**
     * 功能描述: <br>
     * 〈角色和权限的关系〉
     *
     * @Param: [oneToManyDto]
     * @Return: com.srm.util.ResultObject
     * @Author: wzw
     * @Date: 2019/11/7 14:52
     */

    ResultObject insertRoleMenu(OneToManyDto oneToManyDto);

    /**
     * 功能描述: <br>
     * 〈通过角色id获得信息〉
     *
     * @Param: [roleGetInfoDto]
     * @Return: com.alm.util.ResultObject
     * @Author: wzw
     * @Date: 2019/11/7 17:13
     */
    ResultObject getIdByRoleId(RoleGetInfoDto roleGetInfoDto);

    /**
     * 根据角色主键查询当前角色拥有哪些菜单以及按钮
     * @param roleId 角色主键
     * @author ly
     * @date 2020/10/12 9:30
     * @return java.util.List<com.kszs.entity.SysMenu>
     */
    List<SysMenu> getRoleAndAuthority(String roleId);

    /**
     * 根据角色主键查询当前角色拥有哪些菜单以及按钮
     * 与菜单树结合,有权限authority为true
     * @param roleId 角色主键
     * @author ly
     * @date 2020/10/12 9:30
     * @return java.util.List<com.kszs.entity.SysMenu>
     */
    List<SysMenu> getRoleAndAuthorityTree(String roleId);

    /**
     * 通过用户主键获取菜单树
     * @param userId 用户主键
     * @author ly
     * @date 2020/9/22 14:17
     * @return java.util.List<com.kszs.entity.SysMenu>
     */
    List<SysMenu> getSysMenuTreeByUserId(String userId);

    /**
     * 获取菜单按钮权限
     * @param roleId 角色主键
     * @param menuIds 菜单主键
     * @author ly
     * @date 2020/10/14 11:39
     * @return java.util.List<com.kszs.entity.SysRoleMenu>
     */
    List<SysRoleMenu> getButton(String roleId,List<String> menuIds);
}
